package cn.iocoder.yudao.module.system.service.passengerinfo;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.passengerinfo.vo.PassengerInfoCreateReqVO;
import cn.iocoder.yudao.module.system.controller.admin.passengerinfo.vo.PassengerInfoPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.passengerinfo.vo.PassengerInfoUpdateReqVO;
import cn.iocoder.yudao.module.system.controller.app.passengerinfo.vo.PassengerComprehensiveVO;
import cn.iocoder.yudao.module.system.dal.dataobject.passengerinfo.PassengerInfoDO;

import javax.validation.Valid;

/**
 * 乘客信息 Service 接口
 *
 * @author 芋道源码
 */
public interface PassengerInfoService {

    /**
     * 创建乘客信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createPassengerInfo(@Valid PassengerInfoCreateReqVO createReqVO);

    /**
     * 更新乘客信息
     *
     * @param updateReqVO 更新信息
     */
    void updatePassengerInfo(@Valid PassengerInfoUpdateReqVO updateReqVO);

    /**
     * 删除乘客信息
     *
     * @param id 编号
     */
    void deletePassengerInfo(Long id);

    /**
     * 获得乘客信息
     *
     * @param id 编号
     * @return 乘客信息
     */
    PassengerInfoDO getPassengerInfo(Long id);

    /**
     * 获得乘客信息分页
     *
     * @param pageReqVO 分页查询
     * @return 乘客信息分页
     */
    PageResult<PassengerInfoDO> getPassengerInfoPage(PassengerInfoPageReqVO pageReqVO);

    /**
     * 根据用户ID获得乘客信息
     *
     * @param userId 用户ID
     * @return 乘客信息
     */
    PassengerInfoDO getPassengerInfoByUserId(Long userId);

    /**
     * 获取当前登录乘客的综合信息（APP专用）
     *
     * @param userId 当前登录用户ID
     * @return 乘客综合信息
     */
    PassengerComprehensiveVO getMyPassengerComprehensiveInfo(Long userId);

}